home *** CD-ROM | disk | FTP | other *** search
/ Electro GIG / Electro GIG.iso / gig / gig.ins < prev    next >
Text File  |  1995-09-12  |  19KB  |  777 lines

  1. #!/bin/csh -f 
  2. #
  3. #    %W% %E%
  4. #
  5. # giginstall: install gig software from tape or CDROM
  6. #
  7. # This script installs gig software under a user account on sun or sgi.
  8. # It searches for an existing user account, its home directory and its
  9. # group or creates these when necessary.
  10. # It examines accounts local to the current host only.
  11. # It assumes that the gig software is on a tape that has been loaded in
  12. # the tape drive.
  13. # It checks for sufficient disk space by comparing the value space_reqd
  14. # that is patched in this file by maketape against the available space.
  15. # Disk space is expected in the host's local units (i.e. Kb for sun,
  16. # 1/2 Kb blocks for sgi).  Utility "maketape" should take care of this.
  17. #
  18. # options:
  19. # -v display installation status information (verbose)
  20. # -f specify filename for tar command
  21. # -o don't check on space_reqrd
  22. #
  23. # This script can only be run by root.
  24. # Whenever a question is answered with 'q' the program will abort.
  25. #    
  26.  
  27. # check if user is root
  28. set id_line = `id | grep 'root'`
  29. if ("$id_line" == '') then
  30.   set probl_no = 1
  31.   goto problem
  32. endif
  33.  
  34.  
  35. # make sure path contains necessary directories
  36. set path = (/usr/bsd /usr/ucb /bin /usr/bin /etc /usr/etc $path)
  37. rehash 
  38.  
  39. set cd_file = "gig.tar"
  40. set cd_root = $cwd
  41.  
  42. # which machine is this script running on
  43. set MACHINE = `uname -m`
  44. switch ($MACHINE)
  45.   case IP[0-9]:
  46.   case IP[0-9][0-9]:
  47.   case IP[0-9][0-9][0-9]:
  48.     set machine = 'sgi'
  49.     set nr_tape = "/dev/nrtape"
  50.     set disk_free = 'df'
  51.     breaksw;
  52.   case 'sun':
  53.   case 'sun4':
  54.   case 'sun4[a-z0-9]':
  55.     set machine = 'sun'
  56.     set nr_tape = "/dev/nrst0"
  57.     set disk_free = 'df'
  58.     breaksw;
  59.   case 9000/7[0-9][0-9]:
  60.     set machine = 'hp'
  61.     set nr_tape = "/dev/rmt/0mn"
  62.     set disk_free = 'bdf'
  63.     breaksw;
  64.   default:
  65.     set probl_no = 2
  66.     goto problem
  67. endsw
  68.  
  69. if( -e $cd_file) then
  70.   set nr_tape = $cd_root/$cd_file
  71. endif
  72.  
  73. # set machine dependent default user directory
  74. switch ($machine)
  75.   case 'sgi':
  76.     set fixd_def_dir  = "/usr/people/"
  77.     breaksw
  78.   case 'sun':
  79.     set fixd_def_dir  = "/export/home/"
  80.     breaksw
  81.   case 'hp':
  82.     set fixd_def_dir  = "/users/"
  83.     breaksw
  84.   default:
  85.     set probl_no = 3
  86.     goto problem
  87. endsw
  88.  
  89. # default names, files
  90. set def_usr_name  =  'gig'
  91. set def_grp_name  =  'giguser'
  92. set def_usr_dir   =  "${fixd_def_dir}${def_usr_name}"
  93. set def_ser_no    =  '9530'
  94. set def_ser_name  =  'gigrendermanager'
  95. set def_ser_prot  =  '/tcp'
  96. set pwd_file  =  /etc/passwd
  97. set grp_file  =  /etc/group
  98. set ser_file  =  /etc/services
  99.  
  100.  
  101. # check passwd file, group file, services file
  102. if !(-e $pwd_file) then
  103.   set probl_no = 4
  104.   goto problem
  105. endif
  106. if !(-e $grp_file) then
  107.   set probl_no = 5
  108.   goto problem
  109. endif
  110. if !(-e $ser_file) then
  111.   set probl_no = 17
  112.   goto problem
  113. endif
  114.  
  115. set gigvrbos = 0
  116. set gigdemo  = 0
  117. set checksiz = 1
  118. set instfiles=
  119.  
  120. while ($#argv > 0)
  121.   set tmp=$1
  122.   shift argv
  123.   if ("-f" == "$tmp" ) then
  124. # if parameter starts with slash it will be a device or a file specified
  125. # with an absolute pathname, if colon this is probably a remote device
  126. # like guest@machine:/dev/tape
  127. # otherwise combine with current directory
  128. # because we will changedir to the installation directory
  129.     if ((`echo $1 | grep '^/' ` == $1) ||(`echo $1 | grep ':' ` == $1)) then
  130.       set nr_tape=$1
  131.     else
  132.       set nr_tape=$cwd/$1
  133.     endif
  134.     echo "tarring from: " $nr_tape
  135.     shift
  136.   else if ("-i" == "$tmp" ) then
  137.     set instfiles=($instfiles $1)
  138.     shift
  139.   else if ("-o" == "$tmp" ) then
  140.     set checksiz = 0
  141.   else if ("-v" == "$tmp" ) then
  142.     set gigvrbos = 1
  143.   endif
  144. end
  145.  
  146. if ( -f $cd_root/$cd_file && -f $cd_root/$machine$cd_file ) then
  147.   set extract="tar -xovf $cd_root/$cd_file;tar -xovf $cd_root/$machine$cd_file"  
  148. else
  149.   set extract = "tar -xovf $nr_tape"  
  150. endif
  151.  
  152. set def_instl_string = ("Default Installation y/n [y]: ")
  153. set def_updat_string = ("Update existing GIG? y/n [y]: ")
  154. set instl_string     = ("Install? y/n [y]: ")
  155.  
  156. set usr_name   = $def_usr_name
  157. set grp_name   = $def_grp_name
  158. set usr_dir    = $def_usr_dir
  159. set ser_no     = $def_ser_no
  160. set first_time = 1
  161. set ok         = 'n'
  162.  
  163. while ( "$ok" == 'n' )
  164.   set grp_found       = 0
  165.   set read_rest_later = 0
  166.   set chk_grp_later   = 0
  167.   set found_gid       = 0
  168.   set found_uid       = 0
  169.  
  170.  
  171. if ( $first_time ) then
  172. # search for user in password file (do not ask)
  173. set pwd_line = "`egrep "^${usr_name}:" $pwd_file`"
  174. if !($status) then                       #found entry in passwd file
  175.   set read_rest_later = 1
  176.   if ($gigvrbos) echo "user $usr_name exists"
  177.  
  178. endif
  179.  
  180. else
  181. # ask for user name
  182.     set old_usr_name = $usr_name
  183.     echo ""
  184.     echo -n "Enter user name [$def_usr_name]: "
  185.     set tmp = $<
  186.     if ("$tmp" != '') then
  187.       set usr_name = "$tmp"
  188.     else
  189.       set usr_name = "$def_usr_name"
  190.     endif
  191. # search for user in password file
  192.     set pwd_line = "`egrep "^${usr_name}:" $pwd_file`"
  193.     if !($status) then                       #found entry in passwd file
  194.       set read_rest_later = 1
  195.       if ($gigvrbos) echo "user $usr_name exists"
  196.     else
  197. # ask for group name and home directory
  198.  
  199. # ask for group name
  200.         echo -n "Enter group name [$def_grp_name]: "
  201.         set tmp = $<
  202.         if ("$tmp" != '') then
  203.           set grp_name = "$tmp"
  204.     else
  205.       set grp_name = "$def_grp_name"
  206.         endif
  207.     set chk_grp_later = 1
  208.  
  209. # ask for home directory
  210. # substitute new user name in default directory
  211.     set def_dir = "$fixd_def_dir$usr_name"
  212.         echo -n "Enter home directory [$def_dir]: "
  213.         set tmp = $<
  214.         if ("$tmp" != '') then
  215.           set usr_dir = "$tmp"
  216.         else
  217.           set usr_dir = "$def_dir"
  218.         endif
  219.     endif
  220.   endif
  221.  
  222.   if ($read_rest_later) then
  223.  
  224. # get home directory, gid and uid from pwd_file
  225.     set tmp = `echo "$pwd_line" | awk '{FS=":"; print $6}'`
  226.     if ( "$tmp" != '') then                        #found home directory
  227.       set usr_dir  = "$tmp"
  228.     else
  229.       set probl_no = 6
  230.       goto problem
  231.     endif
  232.  
  233. # get gid
  234.     set tmp = `echo "$pwd_line" | awk '{FS=":"; print $4}'`
  235.     if ( "$tmp" != '') then  #found group id
  236.       set grp_number = "$tmp"
  237.       set found_gid = 1
  238.  
  239. # get group name from group file via gid
  240.       set grp_line = "`egrep '^.*:.*:'${grp_number}':' $grp_file`"
  241.       if ( ! $status ) then                   #found entry in group file
  242.         set tmp = `echo "$grp_line" | awk '{FS=":"; print $1}'`
  243.         if ("$tmp" != '') then             #found group name via groupid
  244.           set grp_name = "$tmp"
  245.           if ($gigvrbos) echo "gid of $grp_name = $grp_number"
  246.         else
  247.           set probl_no = 7
  248.           goto problem
  249.         endif
  250.       else
  251.     set probl_no = 15
  252.     goto problem
  253.       endif
  254.     else
  255.       set probl_no = 8
  256.       goto problem
  257.     endif
  258.  
  259.     #get uid
  260.     set tmp = `echo "$pwd_line" | awk '{FS=":"; print $3}'`
  261.     if ( "$tmp" != '') then  #found user id
  262.       set usr_number = "$tmp"
  263.       set found_uid = 1
  264.       if ($gigvrbos) echo "uid of $usr_name = $usr_number"
  265.     else
  266.       set probl_no = 9
  267.       goto problem
  268.     endif
  269.  
  270.     if ! ($first_time) then
  271.       echo "group                = $grp_name"
  272.       echo "home directory       = $usr_dir"        
  273.     endif
  274.   endif
  275.  
  276.   echo ""
  277.   if (-f $usr_dir/bin/gig) then
  278.     echo -n "$def_updat_string"
  279.   else
  280.     if ($usr_name == $def_usr_name && \
  281.     $usr_dir  == $def_usr_dir  && \
  282.     $grp_name == $def_grp_name     ) then
  283.       echo -n "$def_instl_string"
  284.     else
  285.       echo -n "$instl_string"
  286.     endif
  287.   endif
  288.   # get answer
  289.  
  290.   set ok = $<
  291.   if ( $machine == hp ) then
  292.     set ok = `echo "$ok" | awk ' \
  293.       { \
  294.       a = substr( $0, 1, 1);\
  295.       if ((a == "n") || (a == "N")) print "n"; else {\
  296.       if ((a == "q") || (a == "Q")) print "q"; else print "y" }\
  297.       }'`
  298.   else
  299.     set ok = `echo "$ok" | awk ' \\\
  300.       { \\\
  301.       a = substr( $0, 1, 1);\\\
  302.       if ((a == "n") || (a == "N")) print "n"; else {\\\
  303.       if ((a == "q") || (a == "Q")) print "q"; else print "y" }\\\
  304.       }'`
  305.   endif
  306.  
  307.   if ($first_time) set first_time = 0
  308.  
  309.   if ($ok == 'q') then
  310.     echo ""
  311.     echo "installation aborted"
  312.     exit 0
  313.   endif
  314. end
  315. echo ""
  316. unset ok
  317.  
  318. # check if services is available
  319. set services_ok = 0
  320. set first_service_time = 1
  321. while !($services_ok)
  322.   set new_serno_needed = 0
  323.   set add_service_line = 1
  324.   set services_line = "`egrep ${ser_no} ${ser_file}`"
  325.   if !($status) then
  326.     set tmp_sname = `echo "$services_line" | awk '{print $1}'`
  327.     if ( $tmp_sname != $def_ser_name ) then
  328.       set new_serno_needed = 1
  329.     else 
  330.       set add_service_line = 0
  331.     endif
  332.   else
  333.     if ( -x /usr/bin/ypcat ) then
  334.       set services_line = "`ypcat services | grep ${ser_no}`"
  335.       if !($status) then
  336.         set tmp_no = `echo "$services_line" | awk '{print $1}'`
  337.         if ( $tmp_no != $def_ser_name ) then
  338.           set new_serno_needed = 1
  339.         else
  340.       set add_service_line = 0
  341.         endif
  342.       endif
  343.     endif
  344.   endif
  345.  
  346.   echo ""
  347.   if ($first_service_time) then
  348.     if !($new_serno_needed) then
  349.       echo "The RenderManager requires a specific port number to"
  350.       echo "run. Only change services port number if necessary."
  351.       echo -n "Enter port number [$def_ser_no]: "
  352.       set tmp = $<
  353.       if ("$tmp" != '') then
  354.         set ser_no = "$tmp"
  355.       else
  356.     set ser_no = "$def_ser_no"
  357.         set services_ok = 1
  358.       endif
  359.     else
  360.       echo "Port $ser_no is already in use."
  361.       echo -n "Enter new port number between 5000 and 9999: "
  362.       set tmp = $<
  363.       if ("$tmp" != '') set ser_no = "$tmp"
  364.     endif
  365.   else
  366.     if ($new_serno_needed) then
  367.       echo "Port ${ser_no} is already in use!"
  368.       echo -n "Enter new port number between 5000 and 9999: "
  369.       set tmp = $<
  370.       if ("$tmp" != '') set ser_no = "$tmp"
  371.     else
  372.       set services_ok = 1
  373.     endif
  374.   endif
  375.   if ($first_service_time) set first_service_time = 0
  376. end
  377. echo "Installing software"
  378.  
  379.  
  380. #create user directory
  381. if (-e $usr_dir) then
  382.   if !(-d $usr_dir) then
  383.     set probl_no = 11
  384.     goto problem
  385.   endif
  386.   if ($gigvrbos) echo "directory $usr_dir exists and is ok"
  387. else
  388.   mkdir -p $usr_dir
  389.   if ($status) then
  390.     set probl_no = 12
  391.     goto problem
  392.   endif
  393.   set newdir   # to remove in case of error
  394.   if ($gigvrbos) echo "created directory $usr_dir"
  395. endif
  396.  
  397.  
  398. # check for sufficient disk space;
  399. # use second last column of 'df'
  400. set df_free = `$disk_free $usr_dir | egrep '/' | awk '{print $(NF-2)}'`
  401. if ($machine == 'sgi') then
  402.   set space_reqd = 61000
  403. else
  404.   set space_reqd = 23000
  405. endif
  406. set status = 0
  407. if (space_reqd == 777) then
  408.   set probl_no = 13
  409.   goto problem
  410. endif
  411. if (($checksiz == 1) && ($df_free < $space_reqd)) then
  412.   set probl_no = 14
  413.   goto problem
  414. else
  415.   if ($gigvrbos) then
  416.   switch ($machine)
  417.     case "sgi":
  418.       echo "$df_free 1/2 Kb blocks free, enough to install $space_reqd"
  419.       breaksw
  420.     case "sun":
  421.     case "dec":
  422.     case "hp":
  423.       echo "$df_free Kb free, enough to install $space_reqd"
  424.       breaksw
  425.   endsw
  426.   endif
  427. endif
  428.  
  429.  
  430. if ($chk_grp_later) then
  431.  
  432. # search for existing group
  433.   if ($gigvrbos) echo "searching $grp_file for $grp_name..."
  434.   set grp_line = "`egrep "^${grp_name}:" $grp_file`"
  435.   if ( ! $status) then                        #found entry in group file
  436.  
  437. #get gid
  438.     set tmp = `echo "$grp_line" | awk '{FS=":"; print $3}'`
  439.     if ( "$tmp" != '') then                              #found group id
  440.       set grp_number = "$tmp"
  441.       set found_gid = 1
  442.     else
  443.       set probl_no = 10
  444.       goto problem
  445.     endif
  446.     if ($gigvrbos) echo "gid of $grp_name = $grp_number"
  447.   else
  448.     set found_gid = 0
  449. #   set probl_no = 16
  450. #   goto problem
  451.   endif
  452. endif
  453.  
  454.  
  455. if !($found_gid) then
  456.  
  457. # a new gid is required;
  458. # search for first free gid and put it in group file
  459.   if ($gigvrbos) echo "creating new gid for $grp_name..."
  460.   set new_nu = 999
  461.   while (1)
  462.     @ new_nu ++
  463.     egrep -s "^.*:.*:.*:$new_nu" $pwd_file
  464.     if ($status) then
  465.       set grp_number = $new_nu
  466.       unset new_nu
  467.       if ($gigvrbos) echo new gid $grp_number
  468.       break
  469.     else
  470.       if ($gigvrbos) echo gid $new_nu not free
  471.     endif
  472.   end
  473. #keep old group file
  474.   set old_grp_file = ${grp_file}.gig
  475.   #?????
  476.   if !(-f $old_grp_file) then
  477.     /bin/mv $grp_file $old_grp_file #maintain old date for original file
  478.     /bin/cp $old_grp_file $grp_file
  479.     if ( $machine == hp ) then
  480.       chmod 444 $grp_file
  481.     endif
  482.     set grpfile_chgd
  483.   endif
  484.   unset old_grp_file
  485.  
  486. # append new line to group file
  487.   set doe = "echo ${grp_name}::${grp_number}:"
  488.   $doe >> $grp_file
  489.   if ($status) then
  490.     echo "cannot write $grp_file"
  491.   else
  492.     if ($gigvrbos) echo "added new group $grp_name to $grp_file"
  493.   endif
  494. endif
  495.  
  496. if !($found_uid) then
  497.  
  498. # a new uid is required;
  499. # search for first free uid and put it in passwd file
  500.   if ($gigvrbos) echo "creating new uid for $usr_name..."
  501.   set new_nu = 999
  502.   set found = 1
  503.   while ($found)
  504.     @ new_nu ++
  505.     egrep -s "^.*:.*:$new_nu" $pwd_file > /dev/null
  506.     if ($status) then
  507.       set usr_number = $new_nu
  508.       unset new_nu
  509.       if ($gigvrbos) echo new uid $usr_number
  510.       break
  511.     else
  512.       if ($gigvrbos) echo uid $new_nu not free
  513.     endif
  514.   end
  515. #keep old passwd file
  516.   set old_pwd_file = ${pwd_file}.gig
  517.   #?????
  518.   if !(-f $old_pwd_file) then
  519.     /bin/mv $pwd_file $old_pwd_file #maintain old date for original file
  520.     /bin/cp $old_pwd_file $pwd_file
  521.     if ( $machine == hp ) then
  522.       chmod 444 $pwd_file
  523.     endif
  524.     set pwdfile_chgd
  525.   endif
  526.   unset old_pwd_file
  527.  
  528. #append line to passwd file
  529.   set doe="echo ${usr_name}::${usr_number}:${grp_number}:ElectroGIG:${usr_dir}:/bin/csh"
  530.   $doe >> $pwd_file
  531.   if ($status) then
  532.     echo "cannot write $pwd_file"
  533.   else
  534.     if ($gigvrbos) echo "added new user $usr_name to $pwd_file"
  535.   endif
  536.   if (-e /usr/sbin/pwconv ) then
  537.     pwconv 
  538.   endif
  539. endif
  540.  
  541. #
  542. # chgrp on another machine's disk may fail when done by root,
  543. # therefore su
  544. #
  545. chown $usr_name $usr_dir
  546. if ( $machine == hp ) then
  547.   chgrp $grp_name $usr_dir
  548. else
  549.   su $usr_name -c "chgrp $grp_name $usr_dir"
  550. endif
  551. if ($gigvrbos) ls -ld $usr_dir
  552.  
  553.  
  554. if ($add_service_line) then
  555.   /bin/cp $ser_file /etc/services.gig
  556.   set doe="echo ${def_ser_name}   ${ser_no}${def_ser_prot}        # ElectroGIG RenderManager"
  557.   $doe >> $ser_file
  558.   if ($status) then
  559.     echo "cannot write $ser_file"
  560.   else 
  561.     if ($gigvrbos) echo "added new services $ser_no to $ser_file"
  562.   endif
  563. endif
  564.  
  565.  
  566. #
  567. #list of dirs in a project and list of standard projects
  568. #
  569. set libdirs=(lib/intdump lib/intenv lib/intmap lib/intlib lib/intpixmap rcrd production)
  570. set prjdirs=(intdump intenv intmap intlib rcrd production)
  571. set prjs=(gig_prj)
  572.  
  573. #check if new project-structure is available, if not, make one
  574. if (-e $usr_dir/.gigid) then
  575.   if (! -e $usr_dir/projects) then
  576.     su $usr_name -c "mkdir $usr_dir/projects"
  577.     foreach p ($prjs)
  578.       su $usr_name -c "mkdir -p $usr_dir/projects/$p"
  579.     end
  580.     foreach d ($prjdirs)
  581.       su $usr_name -c "mkdir -p $usr_dir/projects/gig_prj/$d"
  582.     end
  583.     set ld=($libdirs)
  584.     foreach d ($prjdirs)
  585.      if ($d != "intlib") then
  586.       su $usr_name -c "/bin/mv $usr_dir/$ld[1]/* $usr_dir/projects/gig_prj/$d >& /dev/null"
  587.      endif
  588.      shift ld
  589.     end
  590.   endif
  591. endif
  592.  
  593. set rootfiles=(utils/setgamma)
  594. foreach i ( $rootfiles ) 
  595.   if ( -e ~$usr_dir/$i ) then
  596.     chown $usr_name $usr_dir/$i
  597.   endif
  598. end
  599.  
  600. su $usr_name -c "cd $usr_dir; find . -exec chmod u+w {} \;"
  601. sleep 10
  602. echo ""
  603. # echo "Extracting software from tape"
  604. if( ! (-f $nr_tape)) then # if not a plain file rewind
  605.   mt -t $nr_tape rewind
  606.   mt -t $nr_tape fsf 1
  607. endif
  608. su $usr_name -c "cd $usr_dir; $extract"
  609. if( ! (-f $nr_tape)) then # if not a plain file rewind
  610.   mt -t $nr_tape rewind
  611. endif
  612.  
  613. #set .rhosts for channels
  614. if (-d $usr_dir/utils) then
  615.   su $usr_name -c "echo `hostname` $usr_name >! $usr_dir/utils/rhosts"
  616.   if ($gigvrbos) echo "created $usr_dir/utils/rhosts"
  617. endif
  618.  
  619. if ($gigvrbos) echo "installing dotfiles:"
  620.  
  621. # move dotfiles to home dir after saving old files
  622. set dotfiles = (login cshrc rhosts Xdefaults)
  623. if ( $machine == sun ) then
  624.   set dotfiles = ($dotfiles openwin-init)
  625. endif
  626. if ( $machine == sgi ) then
  627.   set dotfiles = ($dotfiles sgisession Sgiresources)
  628. endif
  629. foreach f($dotfiles)
  630.   if (-f $usr_dir/utils/$f) then
  631.     if (-f $usr_dir/.$f) then
  632.       set newf = ${f}.$$
  633.       while (-f $usr_dir/$newf)    # just in case ${f}.$$ exists
  634.         set newf = ${newf}.$$
  635.       end
  636.       /bin/mv $usr_dir/.$f $usr_dir/$newf
  637.     endif
  638.     /bin/mv $usr_dir/utils/$f $usr_dir/.$f
  639.     if ($gigvrbos) echo "$f installed"
  640.   endif
  641. end
  642. unset dotfiles
  643.  
  644. # check if the library project exists. If not create it and link
  645. # it to the old intdump etc.
  646. if (! -e $usr_dir/projects/library_prj) then
  647.   su $usr_name -c "mkdir -p $usr_dir/projects/library_prj"
  648.   foreach l ($libdirs)
  649.     su $usr_name -c "ln -s $usr_dir/$l $usr_dir/projects/library_prj"
  650.   end
  651. endif
  652.  
  653. # install gig logo on sgi machine
  654. switch ($machine)
  655.   case "sgi":
  656.     chkconfig -f visuallogin on
  657.     chkconfig -f noiconlogin off
  658.     # change owner of setgamma and make it set-owner-executable
  659.     foreach i ( $rootfiles ) 
  660.       if ( -f $usr_dir/$i ) then
  661.         #chown root $usr_dir/utils/setgamma
  662.         chown root $usr_dir/$i
  663.         chmod 4555 $usr_dir/$i
  664.       endif
  665.     end
  666.     breaksw
  667.   case "sun":
  668.   case "hp":
  669.   case "dec":
  670.     breaksw
  671. endsw
  672.  
  673. foreach i ($instfiles)
  674. #echo su $usr_name -c "cd $usr_dir ; $cd_root/$i.ins"
  675.   su $usr_name -c "cd $usr_dir ; /bin/csh $cd_root/$i.ins -c"
  676. end
  677.  
  678. echo ""
  679. echo GIG software installation ready
  680. echo ""
  681.   echo ""
  682.   echo ""
  683.   su $usr_name -c "$usr_dir/utils/getid"
  684.   echo ""
  685. endif
  686.  
  687. exit 0
  688.  
  689. problem:
  690. echo ""
  691. echo -n "installation problem: "
  692. switch ($probl_no)
  693.   case "1"
  694.     echo "you should be logged in as 'root' to run $0"
  695.     breaksw
  696.   case "2"
  697.     echo "$0 running on unknown machine $MACHINE, bye"
  698.     breaksw
  699.   case "3"
  700.     echo "$0 needs help ($machine)"
  701.     breaksw
  702.   case "4"
  703.     echo "cannot find passwd file"
  704.     breaksw
  705.   case "5"
  706.     echo "cannot find group file"
  707.     breaksw
  708.   case "6"
  709.     echo "cannot obtain home dir for $usr_name from $pwd_file"
  710.     breaksw
  711.   case "7"
  712.     echo "cannot obtain group name for $grp_number from $grp_file"
  713.     breaksw
  714.   case "8"
  715.     echo "cannot obtain gid for $usr_name from $pwd_file"
  716.     breaksw
  717.   case "9"
  718.     echo "cannot obtain uid for $usr_name from $pwd_file"
  719.     breaksw
  720.   case "10"
  721.     echo "cannot obtain gid for $grp_name from $grp_file"
  722.     breaksw
  723.   case "11"
  724.     echo "existing $usr_dir is not a directory"
  725.     breaksw
  726.   case "12"
  727.     echo "cannot not create directory $usr_dir"
  728.     breaksw
  729.   case "13"
  730.     echo "required space not properly initialised"
  731.     breaksw
  732.   case "14"
  733.     echo "there is not enough disk space to install GIG at $usr_dir"
  734.     switch ($machine)
  735.       case "sgi":
  736.         echo " ($space_reqd blocks required)"
  737.         breaksw
  738.       case "sun":
  739.       case "dec":
  740.         echo " ($space_reqd Kb required)"
  741.         breaksw
  742.     endsw
  743.     breaksw
  744.   case "15"
  745.     echo "cannot find group number $grp_number in $grp_file"
  746.     breaksw
  747.   case "16"
  748.     echo "cannot find group name $grp_name in $grp_file"
  749.     breaksw
  750.   case "17"
  751.     echo "cannot find services file"
  752.     breaksw
  753.   default
  754.     breaksw
  755. endsw
  756. echo ""
  757. echo "$0 aborted"
  758.  
  759. # undo as much as possible
  760. # remove newly created directory
  761. if ($?newdir) then
  762.   /bin/rm -rf $usr_dir
  763. endif
  764. # restore passwd and group files
  765. if ($?pwdfile_chgd) then
  766.   /bin/rm -f $pwd_file
  767.   /bin/mv $old_pwd_file $pwd_file
  768. endif
  769. if ($?grpfile_chgd) then
  770.   /bin/rm -f $grp_file
  771.   /bin/mv $old_grp_file $grp_file
  772. endif
  773.  
  774. exit $probl_no
  775.  
  776. #-----------------------------------------------------------------------
  777.